Most modern commercial database products support a database table column indexing mechanism that enables rows of the database to be retrieved more efficiently via a search condition executed against the table's indexed column. For scalar data, an index search key is usually the same scalar value as that which is found in the table's column being indexed.
Most databases store indexing data the same way that they store the primary data being indexed; more specifically, via an extendible-hash-based approach. The search key if first hashed, and then the resultant hash result is used to determine where to store the indexing data within the file system. Although the extendible-hash approach works well for scalar data types, it is unable to support more complex data types, such as spatial data types, full-text data types, and temporal data types. For these data types, another approach is required.
Recently, temporal data types have been introduced into the American National Standards Institute (ANSI) Structured Query Language (SQL) Standard. Temporal data types are non-scalar complex data types characterized by having two attributes signifying “beginning” and “ending” points in time, which when taken together represent a time continuum or time segment. SQL operations that can be performed against temporal data types include such things as: PRECEDES, SUCCEEDS, MEETS, CONTAINS, and OVERLAPS.
It would be beneficial, with respect to query performance, to be able to build secondary indexes on temporal data type columns. Such a technique is presently not available in the industry.